Conventional content addressable memories (CAMs) can provide rapid matching between a specific pattern of received data bits, commonly known as a search key or comparand, and data values stored in a content addressable memory (CAM) array. In a CAM device, a CAM array can be searched in parallel. If a match occurs between each bit of a stored data value and a corresponding bit of an applied comparand, a match indication can be generated, via a match line, to indicate that the applied comparand is stored in the CAM. Data associated with the matching CAM location can then be returned. Thus, in a CAM device, a result can be determined from finding a matching value (content), and not from an address for a value, as is typically done for a random access memory (RAM).
Conventional CAMs are typically composed of a number of CAM cells that can be arranged into an array having rows and columns. Data values for comparison are usually arranged in the row direction. Conventional CAM cells can include binary CAM cells as well as ternary CAM (TCAM) cells.
A conventional TCAM cell can store three states, including a logic “0”, logic “1” and a “don't care”. When such a TCAM cell stores a logic “0” or logic “1”, the TCAM cell can provide the same essential match operation as a binary CAM cell. However, when such a TCAM cell stores a “don't care” value, the TCAM cell can provide a match result regardless of the compare data value applied to the TCAM cell.
A conventional “X/Y” type TCAM cell is shown in FIG. 16. Referring to FIG. 16, a single conventional TCAM cell 1600 generally includes a compare circuit (or “stack”) 1602 and two static random access memory (SRAM) cells 1604-0 and 1604-1. In the particular arrangement of FIG. 16, SRAM cells (1604-0 and 1604-1) can store data bits (referred typically as an X-value and Y-value) to be compared by transistors within stack 1602 against externally supplied comparand data provided in complementary form (CD and BCD). The stack 1602 of FIG. 16 includes four N-type metal-oxide-semiconductor (MOS) transistors. Other conventional stacks, such as those utilized in “mask/value” (MN) type TCAM cells can include five or six such transistors.
In the conventional X/Y type TCAM cell 1600 of FIG. 16, a masking value (don't care) is determined according to a data value stored in both SRAM cells (1604-0 and 1604-1). This is in contrast to a “MN” type TCAM cell in which a masking value is determined according to one data value (e.g., M) stored in a single SRAM cell.
In the conventional TCAM cell 1600 of FIG. 16, write operations to SRAM cells (1604-0 and 1604-1) can be separate (“non-atomic”) or simultaneous (“atomic”). In particular, to write data only to “Y” SRAM cell 1604-0, complementary write data can be driven on bit lines BLY and BBLY, and word line WLY can be driven high. Word line WLX can be maintained low to prevent writing of data to “X” SRAM cell 1604-1. Conversely, to write data only to “X” SRAM cell 1604-1, complementary write data can be driven on bit lines BLX and BBLX, and word line WLX driven high, while word line WLY remains low. For a simultaneous write operation, complementary write data can be provided on both bit line pairs BLX/BBLX and BLY/BBLY and both word lines WLX and WLY can be driven high.
In addition, the conventional TCAM cell 1600 can provide for differential read operations and differential write operations. That is, a data value can be read according to two different signals that produce a differential voltage (i.e., X data and complementary XB data or Y data and complementary YB data). Further, in write operations, write data can be applied via two different signals having complementary data values, as noted above. Differential read and write operations can be more reliable than “single” ended read or write operations.
It is noted that the conventional configuration of FIG. 16 includes six conductive lines per cell disposed in a column wise direction for providing data and compare data to the cell: Y bit line pair BBLY/BLY, X bit line pair BBLX/BLX, and compare data line pair CD/BCD.